import BattleUnitAttrMgr from "./BattleUnitAttrMgr"
import BattleUnitEffectMgr from "./BattleUnitEffectMgr";
import BattleUnitSkillMgr from "./BattleUnitSkillMgr";

/**
 * 战斗单位抽象类
 */
export default abstract class BattleUnitBase {
    /**唯一id */
    uid: string = ""
    /**形象id */
    id: string;
    /**属性管理器 */
    attrMgr = new BattleUnitAttrMgr();
    /**buff管理器 */
    effectMgr = new BattleUnitEffectMgr();
    /**技能管理器 */
    skillMgr = new BattleUnitSkillMgr
    /**存活状态 */
    aliveState: number = 1;
    /**位置 */
    pos: { x, y } = { x: 0, y: 0 }
    /**朝向(1是朝左，-1是朝右) */
    dic: number = 1;

    /**单位分组 */
    unitGroup: number;

    constructor(param: { uid: string, group: number, pos: { x, y } }) {
        this.uid = param.uid;
        this.pos = param.pos;
        this.unitGroup = param.group;
    }

    abstract isAlive(): boolean

    /**战斗开始-初始化一些属性技能之类的 */
    abstract onCombatStart(): void

    /**游戏回合开始-触发一些buff效果 */
    abstract onRoundBegin(): void;

    /**游戏回合结束-触发一些buff效果 */
    abstract onRoundEnd(): void;

    /**开始行动 */
    abstract startAction(): void;
}